home *** CD-ROM | disk | FTP | other *** search
/ Atari Mega Archive 1 / Atari Mega Archive - Volume 1.iso / mint / lib / mntlib44.zoo / mntlib / killpg.c < prev    next >
C/C++ Source or Header  |  1993-02-22  |  834b  |  48 lines

  1. /* killpg() for MiNT */
  2.  
  3. #include <stdlib.h>
  4. #include <errno.h>
  5. #include <osbind.h>
  6. #include <signal.h>
  7. #include <unistd.h>
  8. #include <mintbind.h>
  9.  
  10. extern int __mint;
  11.  
  12. /* vector of signal handlers (for TOS) */
  13. extern __Sigfunc _sig_handler[];    /* in signal.c */
  14.  
  15. /* vector giving which signals are currently blocked from delivery (for TOS) */
  16. extern long _sigmask;            /* in signal.c */
  17.  
  18. /* which signals are pending? */
  19. extern long _sigpending;
  20.  
  21. int
  22. killpg(pgrp, sig)
  23.     int pgrp, sig;
  24. {
  25.     long r;
  26.  
  27.     if (__mint == 0) {
  28.         if (pgrp == 0 || pgrp == getpgrp())
  29.             return kill(getpid(), sig);
  30.         errno = EINVAL;
  31.         return -1;
  32.     }
  33.     if (pgrp < 0) {
  34.         errno = ERANGE;
  35.         return -1;
  36.     }
  37.     r = Pkill(-pgrp, sig);
  38.     if (__mint < 7) {    /* compensate for a bug in MiNT 0.6 */
  39.         (void)Syield();
  40.     }
  41.     if (r < 0) {
  42.         errno = (int) -r;
  43.         return -1;
  44.     }
  45.     return 0;
  46. }
  47.  
  48.